<?php
class PhieuDtsController extends AppController {

	var $name = 'PhieuDts';
	var $helpers = array('Html', 'Form', 'Ajax');
	var $uses = array('Canbo', 'User', 'Trambvtv', 'PhieuDt', 'LoaiDt', 'Doituong', 'DiemDt', 'Ketqua', 'DtLoaidt', 'NdDt');
	var $paginate = array('limit' =>10, 'page' => 1);
	// doan code de xet quyen
	// Một cán bộ chỉ được phép thêm một phiếu mới và điền thông tin vào phiếu đó
	// không được sửa hay xóa một phiếu khác.
	// Ngăn chặn một cán bộ sửa phiếu điều tra của một cán bộ khác.
/*
	function beforeFilter(){
        parent::beforeFilter();
        if($this->Auth->user('ROLE') != 'admin' && in_array($this->params['action'], array('edit', 'delete', 'dienthongtin'))){        	
        	$params = $this->params['pass'];
        	if(empty($params)){
				$this->Session->setFlash('Thao tác không hợp lệ');
				$this->redirect(array('action'=>'index'));
			}else{
				$this->User->recursive = 1;
				$cb = $this->User->find('first',array('conditions'=>array('User.id'=>$this->Auth->user('id'))));
				
				$id = $params[0];
				
				$this->PhieuDt->recursive = 1;
				$count = $this->PhieuDt->find('count', array('conditions'=>array('Canbo.id'=>$cb['Canbo']['id'], 'PhieuDt.id'=>$id)));				
				if(!$count){
					$this->Session->setFlash('Bạn không được phép thay đổi thông tin phiếu điều tra của cán bộ khác');
					//$nongho = $this->PhieuDt->find('first', array('conditions'=>array('PhieuDt.id'=>$id)));
            		$this->redirect(array('action'=>'index'));
            		$this->redirect(array('action'=>'index'));
					$phieu = $this->PhieuDt->findById($id);
            		$this->redirect(array('action'=>'index', $phieu['PhieuDt']['sotay_id']));
				}
			}            
        }
    }
  */  
	function index($sotayId=null) {
		
		if(!$sotayId){
			$this->Session->setFlash('Thao tác không hợp lệ');
			$this->redirect(array('controller'=>'pages', 'action'=>'home'));
		}
		
		$this->User->recursive = 0;
		$cb = $this->User->find('first',array('conditions'=>array('User.id'=>$this->Auth->user('id'))));
		
		$this->Trambvtv->recursive = 0;
		$tram = $this->Canbo->find('first',array('conditions'=>array('Canbo.id'=>$cb['Canbo']['id'])));

		$this->PhieuDt->recursive = 0;
		
		//$phieuDts = $this->paginate('PhieuDt',array('PhieuDt.canbo_id'=>$this->Auth->user('canbo_id')));
		$phieuDts = $this->paginate('PhieuDt', array('PhieuDt.sotay_id'=>$sotayId));
		
	//	print_r($phieuDts);
		$loaidts = $this->LoaiDt->find('all', array('conditions'=>array('LoaiDt.TEN_LOAI !='=>'Bẫy đèn'),'fields'=>'DISTINCT LoaiDt.*','order'=>'LoaiDt.id asc'));
		//$this->Ketqua->recursive = 1;
		//	$ketquas = $this->Ketqua->find('all',array('conditions'=>array('PhieuDt.id'=>$id),'order'=>'Doituong.id, DiemDt.DIEM, NdDt.id','fields'=>'DISTINCT Ketqua.*'));
		//print_r($ketquas);
		$this->PhieuDt->Sotay->recursive = 0;
		$nongho = $this->PhieuDt->Sotay->find('first', array('conditions'=>array('Sotay.id'=>$sotayId)));
		$this->set('nonghoId', $nongho['Nongho']['id']);
        //doan code hien so tay them sau ngay 7-8-2010--Hai
        $sotay = $this->PhieuDt->Sotay->find('first', array('conditions'=>array('Sotay.id'=>$sotayId)));	
		$this->set(compact('cb', 'tram', 'phieuDts', 'loaidts', 'sotayId','sotay'));
	}
	
	function index_xls($sotayId=null) {
		
		if(!$sotayId){
			$this->Session->setFlash('Thao tác không hợp lệ');
			$this->redirect(array('controller'=>'pages', 'action'=>'home'));
		}
		
		$this->User->recursive = 0;
		$cb = $this->User->find('first',array('conditions'=>array('User.id'=>$this->Auth->user('id'))));
		
		$this->Trambvtv->recursive = 0;
		$tram = $this->Canbo->find('first',array('conditions'=>array('Canbo.id'=>$cb['Canbo']['id'])));

		$this->PhieuDt->recursive = 0;
		
		//$phieuDts = $this->paginate('PhieuDt',array('PhieuDt.canbo_id'=>$this->Auth->user('canbo_id')));
		$phieuDts = $this->paginate('PhieuDt', array('PhieuDt.sotay_id'=>$sotayId));
		
	//	print_r($phieuDts);
		$loaidts = $this->LoaiDt->find('all', array('conditions'=>array('LoaiDt.TEN_LOAI !='=>'Bẫy đèn'),'fields'=>'DISTINCT LoaiDt.*','order'=>'LoaiDt.id asc'));
		//$this->Ketqua->recursive = 1;
		//	$ketquas = $this->Ketqua->find('all',array('conditions'=>array('PhieuDt.id'=>$id),'order'=>'Doituong.id, DiemDt.DIEM, NdDt.id','fields'=>'DISTINCT Ketqua.*'));
		//print_r($ketquas);
		$this->PhieuDt->Sotay->recursive = 0;
		$nongho = $this->PhieuDt->Sotay->find('first', array('conditions'=>array('Sotay.id'=>$sotayId)));
		$this->set('nonghoId', $nongho['Nongho']['id']);
        //doan code hien so tay them sau ngay 7-8-2010--Hai
        $sotay = $this->PhieuDt->Sotay->find('first', array('conditions'=>array('Sotay.id'=>$sotayId)));	
		$this->set(compact('cb', 'tram', 'phieuDts', 'loaidts', 'sotayId','sotay'));
        $this->layout='';
	}
	
    function view($id = null) {
		if (!$id) {
			$this->Session->setFlash('Thao tác không hợp lệ');
			$this->redirect(array('action'=>'index'));
		}
		$this->set('phieuDt', $this->PhieuDt->read(null, $id));
	}

	function xuatpdf($id = null) {
		if (!$id) {
			$this->Session->setFlash('Thao tác không hợp lệ');
			$this->redirect(array('controller'=>'pages', 'action'=>'home'));
		}
		
		App::import('Vendor', 'xtcpdf');
		 
		$mypdf = new XTCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
		$this->layout = null;
		
		//set margins
		// set document information
		$mypdf->SetCreator(PDF_CREATOR);
		$mypdf->SetAuthor('mt');
		$mypdf->SetTitle('KC.01.15/06-10');
		$mypdf->SetSubject('');
		$mypdf->SetKeywords('TCPDF, PDF, example, test, guide');
		
		// set default header data
		//$mypdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING);
		$mypdf->SetHeaderData('', '', '', 'KC.01.15/06-10');

		// set header and footer fonts
		$mypdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
		$mypdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
		
		// set default monospaced font
		$mypdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
	
		//set margins
		$mypdf->SetMargins(PDF_MARGIN_LEFT, 16, PDF_MARGIN_RIGHT);
		$mypdf->SetHeaderMargin(PDF_MARGIN_HEADER);
		$mypdf->SetFooterMargin(PDF_MARGIN_FOOTER);
		$mypdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
		$mypdf->SetFont('freesans', '', 11);
		$mypdf->AddPage();
		//can bo
		$this->User->recursive = 1;
		$cb = $this->User->find('first',array('conditions'=>array('User.id'=>$this->Auth->user('id'))));
		//ngay
	//ngay
		$this->PhieuDt->recursive = 1;
		$phieudts = $this->PhieuDt->find('first',array('conditions'=>array('PhieuDt.id'=>$id)));

	//print_r($phieudts);
		$mypdf->Cell(30 ,7 ,'* Cán bộ điều tra: '.$phieudts['Canbo']['HOTEN'], 0,1, 'L',0);
		$mypdf->Cell(30 ,7 ,'* Ngày điều tra: '.date('d-m-Y', strtotime($phieudts['PhieuDt']['NGAY'])).' (Lần thứ:'.$phieudts['PhieuDt']['LAN'].')', 0,1, 'L',0);
		$mypdf->Cell(30 ,7 ,'* Giai đoạn sinh trưởng(NSS): '.$phieudts['Nss']['TEN_NSS'], 0,1, 'L',0);
		// Lấy dữ liệu
	
	
		$loaidts = $this->LoaiDt->find('all', array('conditions'=>array('LoaiDt.TEN_LOAI !='=>'Bẫy đèn'),'fields'=>'DISTINCT LoaiDt.*','order'=>'LoaiDt.id asc'));
		
		$i = 1;
		foreach($loaidts as $loaidt){
			
			
			//xuat LOAI DOITUONG
			$mypdf->Cell(30 ,7 ,$i++.'. '.$loaidt['LoaiDt']['TEN_LOAI'], 0, 0, 'L',0);
			//xuong dong
			$mypdf->Ln();
			
			$this->NdDt->recursive = 0;
			$noidungs = $this->NdDt->find('all', array('conditions'=>array('loai_dt_id'=>$loaidt['LoaiDt']['id']), 'order'=>'NdDt.id', 'fields'=>'DISTINCT NdDt.*'));
			
			$this->DtLoaidt->recursive = 2;
			$doituongs = $this->DtLoaidt->find('all', array('conditions'=>array('DtLoaidt.loai_dt_id'=>$loaidt['LoaiDt']['id']), 'order'=>'DtLoaidt.Doituong_id', 'fields'=>'DISTINCT Doituong.*'));
			
			$this->DiemDt->recursive = 0;
			$diems = $this->DiemDt->find('all', array('order'=>'DIEM', 'fields'=>'DISTINCT *'));
			
			$this->Ketqua->recursive = 1;
			$ketquas = $this->Ketqua->find('all',array('conditions'=>array('NdDt.loai_dt_id'=>$loaidt['LoaiDt']['id'],'PhieuDt.id'=>$id),'order'=>'Doituong.id, DiemDt.DIEM, NdDt.id','fields'=>'DISTINCT Ketqua.*'));
			$mypdf->writeHTML($mypdf->printPdts($noidungs,$doituongs,$diems,$ketquas,$phieuDts), true, false, false, false, '');
		}
		$tenfile='pdt_lan'.$phieudts['PhieuDt']['LAN'].'_of_st'.$phieudts['PhieuDt']['sotay_id'];
		$mypdf->Output($tenfile, 'D');
	}

	function add($sotayId) {
	
		if(!$sotayId){
			$this->Session->setFlash('Thao tác không hợp lệ');
			$this->redirect(array('controller'=>'pages', 'action'=>'index'));
		}
		
		$user = $this->Session->read('curUser');//$this->Auth->user();
		$ten = $user['Canbo']['id'];

		if (!empty($this->data)) {
			$this->PhieuDt->create();
			if ($this->PhieuDt->save($this->data)) {
				$this->Session->setFlash(__('Phiếu điều tra đã được tạo', true));
				$this->redirect(array('action'=>'index', $sotayId));
			} else {
				$this->Session->setFlash(__('Thông tin chưa được lưu. Có thể "Lần điều tra" bị trùng Bạn vui lòng nhập lại', true));
			}
		}
		//$sotays = $this->PhieuDt->Sotay->find('list');
		
		
		$users = $this->PhieuDt->Canbo->User->find('list',array('fields'=>array('User.id','canbo_id')));
		$canbos = $this->PhieuDt->Canbo->find('list');
		$nsses = $this->PhieuDt->Nss->find('list',array('fields'=>array('Nss.id','TEN_NSS')));
		
		$this->set(compact('sotays', 'canbos', 'nsses', 'ten', 'sotayId'));//tu dat ten bien
	}

/*	function edit($sotayId=null,$id = null) {
		if ((!$id && empty($this->data))) {
			$this->Session->setFlash('Thao tác không hợp lệ');
			$this->redirect(array('action'=>'index',$sotayId));
		}
		if (!empty($this->data)) {
			if ($this->PhieuDt->save($this->data)) {
				$this->Session->setFlash(__('Phiếu điều tra đã được thay đổi', true));
				$this->redirect(array('action'=>'index',$sotayId));
			} else {
				$this->Session->setFlash(__('Thông tin chưa được lưu. Bạn vui lòng nhập lại.', true));
			}
		}
		if (empty($this->data)) {
			$this->data = $this->PhieuDt->read(null, $id);
		}
		$sotays = $this->PhieuDt->Sotay->find('list');
		$canbos = $this->PhieuDt->Canbo->find('list');
		$nsses = $this->PhieuDt->Nss->find('list',array('fields'=>array('Nss.id','TEN_NSS')));
		$this->set(compact('sotays','canbos','nsses','nonghoId'));
	}*/

    function edit($sotayId=null,$id = null) {
	 
       if (!$id && empty($this->data)) {
			$this->Session->setFlash(__('Thao tác không hợp lệ', true));
			$this->redirect(array('action'=>'index',$sotayId));
		}
        
		if (!empty($this->data)) {
			if ($this->PhieuDt->save($this->data)) {
				$this->Session->setFlash(__('Thông tin phiếu điều tra đã lưu', true));
				$this->redirect(array('action'=>'index',$sotayId));
			} else {
				$this->Session->setFlash(__('Có lỗi xảy ra. Vui lòng thử lại', true));
			}
		}
		if (empty($this->data)) {
			$this->data = $this->PhieuDt->read(null, $id);
		}
        $sotays = $this->PhieuDt->Sotay->find('list');
		$canbos = $this->PhieuDt->Canbo->find('list');
		$nsses = $this->PhieuDt->Nss->find('list',array('fields'=>array('Nss.id','TEN_NSS')));
		$this->set(compact('sotays','canbos','nsses','sotayId'));
	}

	function delete($sotayId = null, $id = null) {
		$params = $this->params['pass'];
		
		if(count($params) != 2){
			$this->Session->setFlash('Thao tác không hợp lệ');
			$this->redirect(array('action'=>'index'));
		}
		
		if ($this->PhieuDt->del($params[0])) {
			$this->Session->setFlash(__('Thao tác XÓA đã hoàn tất', true));
			$this->redirect(array('action'=>'index', $params[1]));
		}
	}

	/* $id: phieu dieu tra
	   $id2: loai dieu tra
	*/
	function dienthongtin($id = null, $id2 = null){
		$params = $this->params['pass'];
		
		if(count($params) != 2){
			$this->Session->setFlash('Thao tác không hợp lệ');
			$this->redirect(array('controller'=>'pages', 'action'=>'home'));
		}
		
		$phieu = $this->PhieuDt->find('first', array('conditions'=>array('PhieuDt.id'=>$params[0])));
		$loai = $this->LoaiDt->find('first', array('conditions'=>array('LoaiDt.id'=>$params[1])));
		
		if(empty($this->data)){
			
			//Kiểm tra loại đối tượng đã có nội dung điều tra chưa
			if($this->LoaiDt->NdDt->find('count', array('conditions'=>array('loai_dt_id'=>$params[1]))) == 0){
				$this->Session->setFlash('Liên hệ với quản trị để nhập các nội dung điều tra cho các loại đối tượng');
				$this->redirect(array('action'=>'index', $phieu['PhieuDt']['sotay_id']));
			}			
			
			$this->NdDt->recursive = 0;
			$noidungs = $this->NdDt->find('all', array('conditions'=>array('loai_dt_id'=>$loai['LoaiDt']['id']), 'order'=>'NdDt.id', 'fields'=>'DISTINCT NdDt.*'));
			
			$this->DtLoaidt->recursive = 0;
			$doituongs = $this->DtLoaidt->find('all', array('conditions'=>array('DtLoaidt.loai_dt_id'=>$loai['LoaiDt']['id']), 'order'=>'DtLoaidt.Doituong_id', 'fields'=>'DISTINCT Doituong.*'));
			
			$this->DiemDt->recursive = 0;
			$diems = $this->DiemDt->find('all', array('order'=>'DIEM', 'fields'=>'DISTINCT *'));
			
			$this->Ketqua->recursive = 0;
			$ketquas = $this->Ketqua->find('all',array('conditions'=>array('NdDt.loai_dt_id'=>$params[1],
																			'PhieuDt.id'=>$params[0]),
														'order'=>'Doituong.id, DiemDt.DIEM, NdDt.id',
														'fields'=>'DISTINCT Ketqua.*'
														));
			
			$this->set(compact('phieu', 'loai', 'noidungs', 'doituongs', 'diems', 'ketquas'));
		}else{
			$tonghang = count($this->data['diem']);
			$record = array();
			$record['PhieuDt']['id'] = $this->data['phieu']['id'];
			$edit = isset($this->data['makq'])?true:false;
			for($i = 0; $i < $tonghang; $i++){
				$record['DiemDt']['id'] = $this->data['diem'][$i];
				$record['Doituong']['id'] = $this->data['dt'][$i];
				$socot = count($this->data['ketqua'][$i]);
				for($j = 0; $j < $socot; $j++){
					if($edit){
						$record['Ketqua']['id'] = $this->data['makq'][$i][$j];
					}
					$record['NdDt']['id'] = $this->data['mand'][$i][$j];
					$record['Ketqua']['KETQUA'] = $this->data['ketqua'][$i][$j];
					$this->Ketqua->create();
					if(!$this->Ketqua->saveAll($record)){
						$this->Session->setFlash('Lưu dữ liệu bị lỗi. Vui lòng thử lại sau');
						$this->redirect(array('action'=>'index', $params[0], $params[1]));
					}
				}
			}
			
			$phieu = $this->PhieuDt->find('first', array('conditions'=>array('PhieuDt.id'=>$params[0])));
			
			$this->Session->setFlash('Lưu dữ liệu thành công');
			$this->redirect(array('action'=>'index', $phieu['PhieuDt']['sotay_id']));
			
		}
	}
    
    
    
    function dienthongtin_xls($id = null, $id2 = null){
		$params = $this->params['pass'];
		
		if(count($params) != 2){
			$this->Session->setFlash('Thao tác không hợp lệ');
			$this->redirect(array('controller'=>'pages', 'action'=>'home'));
		}
		
		$phieu = $this->PhieuDt->find('first', array('conditions'=>array('PhieuDt.id'=>$params[0])));
		$loai = $this->LoaiDt->find('first', array('conditions'=>array('LoaiDt.id'=>$params[1])));
		
		if(empty($this->data)){
			
			//Kiểm tra loại đối tượng đã có nội dung điều tra chưa
			if($this->LoaiDt->NdDt->find('count', array('conditions'=>array('loai_dt_id'=>$params[1]))) == 0){
				$this->Session->setFlash('Liên hệ với quản trị để nhập các nội dung điều tra cho các loại đối tượng');
				$this->redirect(array('action'=>'index', $phieu['PhieuDt']['sotay_id']));
			}			
			
			$this->NdDt->recursive = 0;
			$noidungs = $this->NdDt->find('all', array('conditions'=>array('loai_dt_id'=>$loai['LoaiDt']['id']), 'order'=>'NdDt.id', 'fields'=>'DISTINCT NdDt.*'));
			
			$this->DtLoaidt->recursive = 0;
			$doituongs = $this->DtLoaidt->find('all', array('conditions'=>array('DtLoaidt.loai_dt_id'=>$loai['LoaiDt']['id']), 'order'=>'DtLoaidt.Doituong_id', 'fields'=>'DISTINCT Doituong.*'));
			
			$this->DiemDt->recursive = 0;
			$diems = $this->DiemDt->find('all', array('order'=>'DIEM', 'fields'=>'DISTINCT *'));
			
			$this->Ketqua->recursive = 0;
			$ketquas = $this->Ketqua->find('all',array('conditions'=>array('NdDt.loai_dt_id'=>$params[1],
																			'PhieuDt.id'=>$params[0]),
														'order'=>'Doituong.id, DiemDt.DIEM, NdDt.id',
														'fields'=>'DISTINCT Ketqua.*'
														));
			
			$this->set(compact('phieu', 'loai', 'noidungs', 'doituongs', 'diems', 'ketquas'));
		}else{
			$tonghang = count($this->data['diem']);
			$record = array();
			$record['PhieuDt']['id'] = $this->data['phieu']['id'];
			$edit = isset($this->data['makq'])?true:false;
			for($i = 0; $i < $tonghang; $i++){
				$record['DiemDt']['id'] = $this->data['diem'][$i];
				$record['Doituong']['id'] = $this->data['dt'][$i];
				$socot = count($this->data['ketqua'][$i]);
				for($j = 0; $j < $socot; $j++){
					if($edit){
						$record['Ketqua']['id'] = $this->data['makq'][$i][$j];
					}
					$record['NdDt']['id'] = $this->data['mand'][$i][$j];
					$record['Ketqua']['KETQUA'] = $this->data['ketqua'][$i][$j];
					$this->Ketqua->create();
					if(!$this->Ketqua->saveAll($record)){
						$this->Session->setFlash('Lưu dữ liệu bị lỗi. Vui lòng thử lại sau');
						$this->redirect(array('action'=>'index', $params[0], $params[1]));
					}
				}
			}
			
			$phieu = $this->PhieuDt->find('first', array('conditions'=>array('PhieuDt.id'=>$params[0])));
			
			$this->Session->setFlash('Lưu dữ liệu thành công');
			$this->redirect(array('action'=>'index', $phieu['PhieuDt']['sotay_id']));
			
		}
    $this->layout='';
	}
    
    
    
    function caphieu_xls($id = null){
	
		
		$loaidts = $this->LoaiDt->find('all', array('conditions'=>array('LoaiDt.TEN_LOAI !='=>'Bẫy đèn'),'fields'=>'DISTINCT LoaiDt.*','order'=>'LoaiDt.id asc'));
		
		$i = 1;
		foreach($loaidts as $loaidt){
			
			
			//xuat LOAI DOITUONG
		
			
			$this->NdDt->recursive = 0;
			$noidungs = $this->NdDt->find('all', array('conditions'=>array('loai_dt_id'=>$loaidt['LoaiDt']['id']), 'order'=>'NdDt.id', 'fields'=>'DISTINCT NdDt.*'));
			
			$this->DtLoaidt->recursive = 2;
			$doituongs = $this->DtLoaidt->find('all', array('conditions'=>array('DtLoaidt.loai_dt_id'=>$loaidt['LoaiDt']['id']), 'order'=>'DtLoaidt.Doituong_id', 'fields'=>'DISTINCT Doituong.*'));
			
			$this->DiemDt->recursive = 0;
			$diems = $this->DiemDt->find('all', array('order'=>'DIEM', 'fields'=>'DISTINCT *'));
			
			$this->Ketqua->recursive = 1;
			$ketquas = $this->Ketqua->find('all',array('conditions'=>array('NdDt.loai_dt_id'=>$loaidt['LoaiDt']['id'],'PhieuDt.id'=>$id),'order'=>'Doituong.id, DiemDt.DIEM, NdDt.id','fields'=>'DISTINCT Ketqua.*'));
            
	   }
       $this->layout='';
       	$this->set(compact('loaidts', 'noidungs', 'doituongs', 'diems', 'diems', 'ketquas'));
    }
}
?>